package com.ht.base.system.biz.convert;


import com.ht.base.system.common.pojo.bo.SysRoleBO;
import com.ht.base.system.dao.domain.SysRoleDO;
import org.apache.commons.collections.CollectionUtils;

import java.util.ArrayList;
import java.util.List;

/**
 * 类SysRoleBeanUtil.java的实现描述：角色信息表工具类
 * 
 * @Author hdx
 * @Date 2023年04月28日
 */
public class SysRoleBeanUtil {

    private SysRoleBeanUtil(){
    }

    public static SysRoleDO sysRoleBOToDO(SysRoleBO srcObj) {
        if (srcObj == null) {
            return null;
        }
        SysRoleDO targetObj = new SysRoleDO();
        targetObj.setId(srcObj.getSysRoleId());//角色ID
        targetObj.setRoleName(srcObj.getRoleName());//角色名称
        targetObj.setRoleKey(srcObj.getRoleKey());//角色权限字符串
        targetObj.setRoleSort(srcObj.getRoleSort());//显示顺序
        targetObj.setDataScope(srcObj.getDataScope());//数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
        targetObj.setMenuCheckStrictly(srcObj.getMenuCheckStrictly());//菜单树选择项是否关联显示
        targetObj.setDeptCheckStrictly(srcObj.getDeptCheckStrictly());//部门树选择项是否关联显示
        targetObj.setStatus(srcObj.getStatus());//角色状态（0正常 1停用）
        targetObj.setDelFlag(srcObj.getDelFlag());//删除标志（0代表存在 2代表删除）
        targetObj.setCreateBy(srcObj.getCreateBy());//创建者
        targetObj.setCreateTime(srcObj.getCreateTime());//创建时间
        targetObj.setUpdateBy(srcObj.getUpdateBy());//更新者
        targetObj.setUpdateTime(srcObj.getUpdateTime());//更新时间
        targetObj.setRemark(srcObj.getRemark());//备注
        return targetObj;
    }

    public static SysRoleBO sysRoleDOToBO(SysRoleDO srcObj) {
        if (srcObj == null) {
            return null;
        }
        SysRoleBO targetObj = new SysRoleBO();
        targetObj.setSysRoleId(srcObj.getId());//角色ID
        targetObj.setRoleName(srcObj.getRoleName());//角色名称
        targetObj.setRoleKey(srcObj.getRoleKey());//角色权限字符串
        targetObj.setRoleSort(srcObj.getRoleSort());//显示顺序
        targetObj.setDataScope(srcObj.getDataScope());//数据范围（1：全部数据权限 2：自定数据权限 3：本部门数据权限 4：本部门及以下数据权限）
        targetObj.setMenuCheckStrictly(srcObj.getMenuCheckStrictly());//菜单树选择项是否关联显示
        targetObj.setDeptCheckStrictly(srcObj.getDeptCheckStrictly());//部门树选择项是否关联显示
        targetObj.setStatus(srcObj.getStatus());//角色状态（0正常 1停用）
        targetObj.setDelFlag(srcObj.getDelFlag());//删除标志（0代表存在 2代表删除）
        targetObj.setCreateBy(srcObj.getCreateBy());//创建者
        targetObj.setCreateTime(srcObj.getCreateTime());//创建时间
        targetObj.setUpdateBy(srcObj.getUpdateBy());//更新者
        targetObj.setUpdateTime(srcObj.getUpdateTime());//更新时间
        targetObj.setRemark(srcObj.getRemark());//备注
        return targetObj;
    }

    public static List<SysRoleBO> doList2BOList(List<SysRoleDO> doList) {
        List<SysRoleBO> boList = new ArrayList<>();
        if (CollectionUtils.isEmpty(doList)) return boList;

        doList.stream().forEach(d -> boList.add(SysRoleBeanUtil.sysRoleDOToBO(d)));
        return boList;
    }

    public static List<SysRoleDO> boList2DOList(List<SysRoleBO> boList) {
        List<SysRoleDO> doList = new ArrayList<>();
        if (CollectionUtils.isEmpty(boList)) return doList;

        boList.stream().forEach(b -> doList.add(SysRoleBeanUtil.sysRoleBOToDO(b)));
        return doList;
    }
}